﻿using Devonline.Security;

namespace Devonline.AspNetCore.Security;

/// <summary>
/// 使用数据库上下文存储的数据安全服务
/// 证书和密钥的存储会固定使用 Certificate 和 Secret 相关的对象
/// </summary>
/// <typeparam name="TDbContext">数据库上下文</typeparam>
/// <typeparam name="TKey">主键类型</typeparam>
public interface IUserDataSecurityService<TDbContext, TKey> :
    IDataSecurityService<TDbContext, TKey>,
    IDataSecurityService,
    ISecurityService
    where TDbContext : BaseSecurityDbContext
    where TKey : IConvertible;

/// <summary>
/// 使用数据库上下文存储的数据安全服务
/// 字符串作为主键的默认实现
/// 证书和密钥的存储会固定使用 Certificate 和 Secret 相关的对象
/// </summary>
/// <typeparam name="TDbContext">数据库上下文</typeparam>
public interface IUserDataSecurityService<TDbContext> :
    IUserDataSecurityService<TDbContext, string>,
    IDataSecurityService,
    IDataSecurityService<TDbContext>,
    ISecurityService
    where TDbContext : BaseSecurityDbContext
{
    /// <summary>
    /// 当前登录的用户编号
    /// </summary>
    string UserId { get; }
    /// <summary>
    /// 当前登录的用户
    /// </summary>
    string UserName { get; }
}